package org.abettor.octopus.data;

import java.util.ArrayList;
import java.util.List;

/**
 * 身份验证信息配对列表
 * @author abettor
 *
 */
public class AuthenticationList
{
	private static AuthenticationList globalAuthList;
	private List<AuthenticationPair> authList;
	private static Object synLocker = new Object();

	/**
	 * 默认构造函数，创建身份验证信息配对列表对象
	 *
	 */
	public AuthenticationList()
	{
		authList = new ArrayList<AuthenticationPair>();
	}

	/**
	 * 获取singlton实例
	 */
	public static AuthenticationList getInstance()
	{
		synchronized(synLocker)
		{
			if(globalAuthList == null)
			{
				globalAuthList = new AuthenticationList();
			}
		}

		return globalAuthList;
	}

	/**
	 * 获取当前队列大小
	 */
	public int getSize()
	{
		int size = 0;
		synchronized(synLocker)
		{
			size = authList.size();
		}

		return size;
	}

	/**
	 * 向队列尾部插入记录
	 * @param authPair 身份验证信息对象
	 */
	public void pushBack(AuthenticationPair authPair)
	{
		synchronized(synLocker)
		{
			authList.add(authPair);
		}
	}

	/**
	 * 从队列头部取出一条记录（此操作将导致该记录从队列中删除）
	 * @return 用于连接数据库的身份验证信息对象
	 */
	public AuthenticationPair popFront()
	{
		AuthenticationPair authPair = null;
		synchronized(synLocker)
		{
			if(authList.size() > 0)
			{
				authPair = authList.get(0);
				authList.remove(0);
			}
		}

		return authPair;
	}
}
